
unsigned int heapStart;
unsigned int heapNext;
unsigned int heapLimit;

int specialObjectsArray;
int nil;
int false;
int true;

#define SchedulerAssociation (slotOf(specialObjectsArray, 4))
#define SmallInteger (slotOf(specialObjectsArray, 6))
#define String (slotOf(specialObjectsArray, 7))
#define Array (slotOf(specialObjectsArray, 8)) 
#define Float (slotOf(specialObjectsArray, 10))
#define Point (slotOf(specialObjectsArray, 13))
#define LargePositiveInteger (slotOf(specialObjectsArray, 14))
#define TheDisplay (slotOf(specialObjectsArray, 15))
#define Message (slotOf(specialObjectsArray, 16))
#define Semaphore (slotOf(specialObjectsArray, 19))
#define Character (slotOf(specialObjectsArray, 20)) 
#define doesNotUnderstand (slotOf(specialObjectsArray, 21))
#define specialSelectors (slotOf(specialObjectsArray, 24))
#define CharacterTable (slotOf(specialObjectsArray, 25))
#define ByteArray (slotOf(specialObjectsArray, 27))
#define compactClassesArray (slotOf(specialObjectsArray, 29))
#define FloatPrototype (slotOf(specialObjectsArray, 32))
#define LargePositiveIntegerPrototype (slotOf(specialObjectsArray, 33))
#define LargeNegativeInteger (slotOf(specialObjectsArray, 43))
//The Squeak VM manages to not reference Symbol...
#define Symbol (classOf(doesNotUnderstand))
#define BlockContext (slotOf(compactClassesArray, 13))
#define MethodContext (slotOf(compactClassesArray, 14))

int allocate(int words);
int instantiate(int class);
int instantiateN(int class, int size);
int clone(int oop);

int firstObject();
int objectAfter(int oop);
